package com.wsoft.im.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wsoft.im.entity.ImGroupMemberEntity;
import com.wsoft.im.query.group.member.ToggleLeaderQuery;
import com.wsoft.im.query.group.member.UpdateGroupMemberQuery;
import com.wsoft.im.query.group.member.UpdateMemberQuery;
import com.wsoft.im.vo.GroupMemberVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Z001
 * @since 2025年01月14日 09:21:20
 */
public interface IImGroupMemberService extends IService<ImGroupMemberEntity> {

    /**
     * 新增群成员
     * @param query
     * @return
     */
    boolean addMember(UpdateMemberQuery query);

    /**
     * 移除群成员
     * @param query
     * @return
     */
    boolean removeMember(UpdateMemberQuery query);

    /**
     * 群成员退群
     * @param query
     * @return
     */
    boolean quitGroup(UpdateGroupMemberQuery query);

    /**
     * 解散群
     * @param query
     * @return
     */
    boolean dissolveGroup(UpdateGroupMemberQuery query);

    /**
     * 获取群成员信息
     * @param groupId
     * @return
     */
    List<GroupMemberVO> getGroupMember(Long groupId);

    /**
     * 获取当前用户在群组中的信息
     * @param groupId
     * @return
     */
    ImGroupMemberEntity getInfo(Long groupId);

    /**
     * 切换群主
     * @param query
     * @return
     */
    boolean toggleLeader(ToggleLeaderQuery query);
}
